1. Field of the Invention
The present invention relates to data processing systems. More specifically, the present invention relates to a method and apparatus for encoding data in such a way that the data describes itself, so that the data may be manipulated in a predetermined manner associated with the indicated data type.
2. Background Information
As software development becomes increasing prevalent and, used in circumstances which formerly applied discrete electronics to perform desired functions, needs for testing and verification of the functionality of software become more and more important. One prior art method of testing software includes the use of so-called probes and traces. Probes are a means of distinguishing points in code, and perhaps, generating an event record, although other things can be done. A trace is a time-linear (or, at least, causally ordered) collection of records of some set of the distinguished events in the execution of a program or set of programs. A probe, like a test point in circuitry, is a place at which a developer may evaluate the performance of the running program. Some probes may be selectively enabled or disabled depending upon operating circumstances, so that object code can generate probe information without requiring that a programmer modify the source code for the program. Thus, probes within an executable routine may be selectively enabled or disabled in groups at run-time without modification of the underlying source code. Thus, a programmer may determine faults in a program without knowing anything about the internals of the operational code (although this is certainly helpful).
We may categorize probes into two classes: manual probes; and automatic probes. Manual probes are inserted by a programmer by hand into the source code of a program. They are used by the programmer for detailed debugging and performance analysis. A sub-class of manual probes are known as semantic probes with effects that are documented as part of the program or library interface. Typically, these are used to provide external debugging or performance analysis information. Automatic probes are those which are inserted into existing run-time programs by tools without direct programmer manipulation of the source code. Automatic probes may be inserted by a pre-processor or by operating on processed binaries, and may provide such information as procedure exit and entry points. Automatic probes may be selectively enabled and disabled at run-time to specifically analyze certain performance problems.
One of the problems with prior art probes and tracing is that data is expected by the test engineer only in a certain format. Typically, the data is presented in a raw form, wherein the test engineer must determine what the data returned from the probes represents. Thus, the test engineer evaluating an executable program which generates information from probes must have an intimate understanding of the probe information provided at program run-time. Unfortunately, in many instances, such information is not available, or may be obscured by the original programmer of the application program under test. Thus, it is desirable that a program generating probes provide information about the probes in a standardized manner so that diagnosis of the programs under test may be most easily accomplished without a detailed understanding of the internal functioning of the program under test. Prior art techniques of inter-process communication in environments such as testing, typically require information extraneous to the data to discern the type of data returned from the program.